<?php





            
class ENTITY__NullColumn {

    protected $has_value;
    protected $value;

    public function __construct($has_value, $value = NULL) {

        $this->has_value = $has_value;
        $this->value = $value;
    }

    public function hasValue() {
        return $this->has_value;
    }

    public function value() {
        return $this->value;
    }

}






            


/**
 * ENTITY__FIND__GENERIC
 * 
 * ordem de consulta:
 * 
 * $e = new ENTITY_FIND_usuario();
 * $e->selectAll();
 * $e->filterByNome('marcel');
 * $e->filterBySenha('123');
 * 
 * retorna um tipo ENTITY__COLLECTION__usuario:
 * $resultado = $e->get();
 * 
 */
class ENTITY__FIND__GENERIC {
    protected $query = "";
    protected $whereAdded = false;
    protected $amount_found = 0;
    protected $con;
    protected $select_all_called = false;

    public function selectAll() {
        
    }

    protected function addWhereOrAnd() {
        if ($this->whereAdded) {
            $this->addQuery(" AND ");
        }else{
           $this->addQuery(" WHERE ");
            $this->whereAdded = true;
        }
    }

    protected function addQuery($query) {
        $this->selectAll();
        $this->query.= $query;
    }

    public function orderBy($column) {
        $this->addQuery(" ORDER BY " . $column);
    }
    
    public function limitAmount($amount) {
        $this->addQuery(" LIMIT $amount");
    }
    
    public function limitStartAmount($start, $amount) {
        $this->addQuery(" LIMIT $start, $amount");
    }

    
    
    
    /**
     *
     * @return int quantidade de registros encontrados com a consulta.
     */
    public function amountFound() {
       return $this->amount_found;
    }
}







            


// objeto não encontrado (getByPk):
class MARCEL_ORM_ObjectNotFoundException extends Exception { }

// falha ao salvar objeto no banco (salvar):
class MARCEL_ORM_SaveException extends Exception { }

// não encontrou registro algum na tabela (getAll):
class MARCEL_ORM_EmptyTableException extends Exception { }

// não pode remover registro porque é chave estrangeira em outra tabela (remover):
class MARCEL_ORM_ForeignKeyConstraintException extends Exception { }



class ENTITY_cidade extends pk_table_entity {
        
        public static $table = 'cidade';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_cidade = 'cidade';
                    public static $COLUMN_estado = 'estado';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_cidade = false;
                    protected $alimentou_estado = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $cidade = NULL;
                    protected $estado = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($cidade = NULL, $estado = NULL) {

$this->setCidade($cidade);
$this->setEstado($estado);

}



    /**
     *
     * @return ENTITY_cidade
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_cidade 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_cidade();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM cidade WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setCidade($cidade) {
        $this->cidade = $cidade;
    }
                        
    public function setEstado($estado) {
        $this->estado = $estado;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getCidade() {
        if (!$this->alimentou_cidade) {
            $r = $this->con()->qcv("
                        SELECT cidade 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "cidade");
            $this->cidade = $r[0];
            $this->alimentou_cidade = true;
        }
        return $this->cidade;
    }
                        


                    

public function getEstado() {
        if (!$this->alimentou_estado) {
            $r = $this->con()->qcv("
                        SELECT estado 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "estado");
            $this->estado = $r[0];
            $this->alimentou_estado = true;
        }
        return $this->estado;
    }
                        

public function feedFromDB() {$this->getCidade();
$this->getEstado();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM cidade WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $cidade = ($this->cidade === NULL) ? "NULL" : "'" . addslashes($this->cidade) . "'";$estado = ($this->estado === NULL) ? "NULL" : "'" . addslashes($this->estado) . "'";
            $q = "
            UPDATE cidade 
            SET id = $this->new_id, cidade = $cidade, estado = $estado WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$cidade = ($this->cidade === NULL) ? "NULL" : "'" . addslashes($this->cidade) . "'";$estado = ($this->estado === NULL) ? "NULL" : "'" . addslashes($this->estado) . "'";        
                    
                    $q = "
INSERT INTO cidade (id, cidade, estado) VALUES ($id, $cidade, $estado);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM cidade 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__cidade extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM cidade";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByCidade($cidade) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($cidade !== NULL) {
            $valor = "'$cidade'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("cidade = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByEstado($estado) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($estado !== NULL) {
            $valor = "'$estado'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("estado = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Cidade($cidade) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($cidade !== NULL) {
            $valor = "'$cidade'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("cidade LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Estado($estado) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($estado !== NULL) {
            $valor = "'$estado'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("estado LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__cidade
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__cidade();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_cidade::getByPk($v);
                $collection->addCidade($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__cidade {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_cidade cidade 
     */
    public function addCidade($cidade) {
        array_push($this->collection, $cidade);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_cidade 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        



class ENTITY_estado extends pk_table_entity {
        
        public static $table = 'estado';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_uf = 'uf';
                    public static $COLUMN_nome = 'nome';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_uf = false;
                    protected $alimentou_nome = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $uf = NULL;
                    protected $nome = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($uf = NULL, $nome = NULL) {

$this->setUf($uf);
$this->setNome($nome);

}



    /**
     *
     * @return ENTITY_estado
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_estado 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_estado();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM estado WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setUf($uf) {
        $this->uf = $uf;
    }
                        
    public function setNome($nome) {
        $this->nome = $nome;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getUf() {
        if (!$this->alimentou_uf) {
            $r = $this->con()->qcv("
                        SELECT uf 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "uf");
            $this->uf = $r[0];
            $this->alimentou_uf = true;
        }
        return $this->uf;
    }
                        


                    

public function getNome() {
        if (!$this->alimentou_nome) {
            $r = $this->con()->qcv("
                        SELECT nome 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "nome");
            $this->nome = $r[0];
            $this->alimentou_nome = true;
        }
        return $this->nome;
    }
                        

public function feedFromDB() {$this->getUf();
$this->getNome();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM estado WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $uf = ($this->uf === NULL) ? "NULL" : "'" . addslashes($this->uf) . "'";$nome = ($this->nome === NULL) ? "NULL" : "'" . addslashes($this->nome) . "'";
            $q = "
            UPDATE estado 
            SET id = $this->new_id, uf = $uf, nome = $nome WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$uf = ($this->uf === NULL) ? "NULL" : "'" . addslashes($this->uf) . "'";$nome = ($this->nome === NULL) ? "NULL" : "'" . addslashes($this->nome) . "'";        
                    
                    $q = "
INSERT INTO estado (id, uf, nome) VALUES ($id, $uf, $nome);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM estado 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__estado extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM estado";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByUf($uf) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($uf !== NULL) {
            $valor = "'$uf'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("uf = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByNome($nome) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($nome !== NULL) {
            $valor = "'$nome'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("nome = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Uf($uf) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($uf !== NULL) {
            $valor = "'$uf'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("uf LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Nome($nome) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($nome !== NULL) {
            $valor = "'$nome'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("nome LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__estado
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__estado();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_estado::getByPk($v);
                $collection->addEstado($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__estado {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_estado estado 
     */
    public function addEstado($estado) {
        array_push($this->collection, $estado);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_estado 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        



class ENTITY_inscricao extends pk_table_entity {
        
        public static $table = 'inscricao';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_nome = 'nome';
                    public static $COLUMN_email = 'email';
                    public static $COLUMN_id_cidade = 'id_cidade';
                    public static $COLUMN_endereco = 'endereco';
                    public static $COLUMN_dt_nasc = 'dt_nasc';
                    public static $COLUMN_sexo = 'sexo';
                    public static $COLUMN_formacao = 'formacao';
                    public static $COLUMN_id_tipo = 'id_tipo';
                    public static $COLUMN_id_participacao = 'id_participacao';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_nome = false;
                    protected $alimentou_email = false;
                    protected $alimentou_id_cidade = false;
                    protected $alimentou_endereco = false;
                    protected $alimentou_dt_nasc = false;
                    protected $alimentou_sexo = false;
                    protected $alimentou_formacao = false;
                    protected $alimentou_id_tipo = false;
                    protected $alimentou_id_participacao = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $nome = NULL;
                    protected $email = NULL;
                    protected $id_cidade = NULL;
                    protected $endereco = NULL;
                    protected $dt_nasc = NULL;
                    protected $sexo = NULL;
                    protected $formacao = NULL;
                    protected $id_tipo = NULL;
                    protected $id_participacao = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($nome = NULL, $email = NULL, $id_cidade = NULL, $endereco = NULL, $dt_nasc = NULL, $sexo = NULL, $formacao = NULL, $id_tipo = NULL, $id_participacao = NULL) {

$this->setNome($nome);
$this->setEmail($email);
$this->setId_cidade($id_cidade);
$this->setEndereco($endereco);
$this->setDt_nasc($dt_nasc);
$this->setSexo($sexo);
$this->setFormacao($formacao);
$this->setId_tipo($id_tipo);
$this->setId_participacao($id_participacao);

}



    /**
     *
     * @return ENTITY_inscricao
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_inscricao 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_inscricao();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM inscricao WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setNome($nome) {
        $this->nome = $nome;
    }
                        
    public function setEmail($email) {
        $this->email = $email;
    }
                        
    public function setId_cidade($id_cidade) {
        $this->id_cidade = $id_cidade;
    }
                        
    public function setEndereco($endereco) {
        $this->endereco = $endereco;
    }
                        
    public function setDt_nasc($dt_nasc) {
        $this->dt_nasc = $dt_nasc;
    }
                        
    public function setSexo($sexo) {
        $this->sexo = $sexo;
    }
                        
    public function setFormacao($formacao) {
        $this->formacao = $formacao;
    }
                        
    public function setId_tipo($id_tipo) {
        $this->id_tipo = $id_tipo;
    }
                        
    public function setId_participacao($id_participacao) {
        $this->id_participacao = $id_participacao;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getNome() {
        if (!$this->alimentou_nome) {
            $r = $this->con()->qcv("
                        SELECT nome 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "nome");
            $this->nome = $r[0];
            $this->alimentou_nome = true;
        }
        return $this->nome;
    }
                        


                    

public function getEmail() {
        if (!$this->alimentou_email) {
            $r = $this->con()->qcv("
                        SELECT email 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "email");
            $this->email = $r[0];
            $this->alimentou_email = true;
        }
        return $this->email;
    }
                        


                    

public function getId_cidade() {
        if (!$this->alimentou_id_cidade) {
            $r = $this->con()->qcv("
                        SELECT id_cidade 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "id_cidade");
            $this->id_cidade = $r[0];
            $this->alimentou_id_cidade = true;
        }
        return $this->id_cidade;
    }
                        


                    

public function getEndereco() {
        if (!$this->alimentou_endereco) {
            $r = $this->con()->qcv("
                        SELECT endereco 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "endereco");
            $this->endereco = $r[0];
            $this->alimentou_endereco = true;
        }
        return $this->endereco;
    }
                        


                    

public function getDt_nasc() {
        if (!$this->alimentou_dt_nasc) {
            $r = $this->con()->qcv("
                        SELECT dt_nasc 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "dt_nasc");
            $this->dt_nasc = $r[0];
            $this->alimentou_dt_nasc = true;
        }
        return $this->dt_nasc;
    }
                        


                    

public function getSexo() {
        if (!$this->alimentou_sexo) {
            $r = $this->con()->qcv("
                        SELECT sexo 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "sexo");
            $this->sexo = $r[0];
            $this->alimentou_sexo = true;
        }
        return $this->sexo;
    }
                        


                    

public function getFormacao() {
        if (!$this->alimentou_formacao) {
            $r = $this->con()->qcv("
                        SELECT formacao 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "formacao");
            $this->formacao = $r[0];
            $this->alimentou_formacao = true;
        }
        return $this->formacao;
    }
                        


                    

public function getId_tipo() {
        if (!$this->alimentou_id_tipo) {
            $r = $this->con()->qcv("
                        SELECT id_tipo 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "id_tipo");
            $this->id_tipo = $r[0];
            $this->alimentou_id_tipo = true;
        }
        return $this->id_tipo;
    }
                        


                    

public function getId_participacao() {
        if (!$this->alimentou_id_participacao) {
            $r = $this->con()->qcv("
                        SELECT id_participacao 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "id_participacao");
            $this->id_participacao = $r[0];
            $this->alimentou_id_participacao = true;
        }
        return $this->id_participacao;
    }
                        

public function feedFromDB() {$this->getNome();
$this->getEmail();
$this->getId_cidade();
$this->getEndereco();
$this->getDt_nasc();
$this->getSexo();
$this->getFormacao();
$this->getId_tipo();
$this->getId_participacao();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM inscricao WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $nome = ($this->nome === NULL) ? "NULL" : "'" . addslashes($this->nome) . "'";$email = ($this->email === NULL) ? "NULL" : "'" . addslashes($this->email) . "'";$id_cidade = ($this->id_cidade === NULL) ? "NULL" : "'" . addslashes($this->id_cidade) . "'";$endereco = ($this->endereco === NULL) ? "NULL" : "'" . addslashes($this->endereco) . "'";$dt_nasc = ($this->dt_nasc === NULL) ? "NULL" : "'" . addslashes($this->dt_nasc) . "'";$sexo = ($this->sexo === NULL) ? "NULL" : "'" . addslashes($this->sexo) . "'";$formacao = ($this->formacao === NULL) ? "NULL" : "'" . addslashes($this->formacao) . "'";$id_tipo = ($this->id_tipo === NULL) ? "NULL" : "'" . addslashes($this->id_tipo) . "'";$id_participacao = ($this->id_participacao === NULL) ? "NULL" : "'" . addslashes($this->id_participacao) . "'";
            $q = "
            UPDATE inscricao 
            SET id = $this->new_id, nome = $nome, email = $email, id_cidade = $id_cidade, endereco = $endereco, dt_nasc = $dt_nasc, sexo = $sexo, formacao = $formacao, id_tipo = $id_tipo, id_participacao = $id_participacao WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$nome = ($this->nome === NULL) ? "NULL" : "'" . addslashes($this->nome) . "'";$email = ($this->email === NULL) ? "NULL" : "'" . addslashes($this->email) . "'";$id_cidade = ($this->id_cidade === NULL) ? "NULL" : "'" . addslashes($this->id_cidade) . "'";$endereco = ($this->endereco === NULL) ? "NULL" : "'" . addslashes($this->endereco) . "'";$dt_nasc = ($this->dt_nasc === NULL) ? "NULL" : "'" . addslashes($this->dt_nasc) . "'";$sexo = ($this->sexo === NULL) ? "NULL" : "'" . addslashes($this->sexo) . "'";$formacao = ($this->formacao === NULL) ? "NULL" : "'" . addslashes($this->formacao) . "'";$id_tipo = ($this->id_tipo === NULL) ? "NULL" : "'" . addslashes($this->id_tipo) . "'";$id_participacao = ($this->id_participacao === NULL) ? "NULL" : "'" . addslashes($this->id_participacao) . "'";        
                    
                    $q = "
INSERT INTO inscricao (id, nome, email, id_cidade, endereco, dt_nasc, sexo, formacao, id_tipo, id_participacao) VALUES ($id, $nome, $email, $id_cidade, $endereco, $dt_nasc, $sexo, $formacao, $id_tipo, $id_participacao);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM inscricao 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__inscricao extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM inscricao";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByNome($nome) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($nome !== NULL) {
            $valor = "'$nome'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("nome = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByEmail($email) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($email !== NULL) {
            $valor = "'$email'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("email = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterById_cidade($id_cidade) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id_cidade !== NULL) {
            $valor = "'$id_cidade'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_cidade = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByEndereco($endereco) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($endereco !== NULL) {
            $valor = "'$endereco'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("endereco = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByDt_nasc($dt_nasc) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($dt_nasc !== NULL) {
            $valor = "'$dt_nasc'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("dt_nasc = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBySexo($sexo) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($sexo !== NULL) {
            $valor = "'$sexo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("sexo = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByFormacao($formacao) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($formacao !== NULL) {
            $valor = "'$formacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("formacao = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterById_tipo($id_tipo) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id_tipo !== NULL) {
            $valor = "'$id_tipo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_tipo = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterById_participacao($id_participacao) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id_participacao !== NULL) {
            $valor = "'$id_participacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_participacao = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Nome($nome) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($nome !== NULL) {
            $valor = "'$nome'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("nome LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Email($email) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($email !== NULL) {
            $valor = "'$email'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("email LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Id_cidade($id_cidade) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($id_cidade !== NULL) {
            $valor = "'$id_cidade'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_cidade LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Endereco($endereco) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($endereco !== NULL) {
            $valor = "'$endereco'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("endereco LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Dt_nasc($dt_nasc) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($dt_nasc !== NULL) {
            $valor = "'$dt_nasc'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("dt_nasc LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Sexo($sexo) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($sexo !== NULL) {
            $valor = "'$sexo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("sexo LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Formacao($formacao) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($formacao !== NULL) {
            $valor = "'$formacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("formacao LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Id_tipo($id_tipo) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($id_tipo !== NULL) {
            $valor = "'$id_tipo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_tipo LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Id_participacao($id_participacao) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($id_participacao !== NULL) {
            $valor = "'$id_participacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id_participacao LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__inscricao
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__inscricao();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_inscricao::getByPk($v);
                $collection->addInscricao($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__inscricao {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_inscricao inscricao 
     */
    public function addInscricao($inscricao) {
        array_push($this->collection, $inscricao);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_inscricao 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        



class ENTITY_participacao extends pk_table_entity {
        
        public static $table = 'participacao';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_participacao = 'participacao';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_participacao = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $participacao = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($participacao = NULL) {

$this->setParticipacao($participacao);

}



    /**
     *
     * @return ENTITY_participacao
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_participacao 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_participacao();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM participacao WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setParticipacao($participacao) {
        $this->participacao = $participacao;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getParticipacao() {
        if (!$this->alimentou_participacao) {
            $r = $this->con()->qcv("
                        SELECT participacao 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "participacao");
            $this->participacao = $r[0];
            $this->alimentou_participacao = true;
        }
        return $this->participacao;
    }
                        

public function feedFromDB() {$this->getParticipacao();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM participacao WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $participacao = ($this->participacao === NULL) ? "NULL" : "'" . addslashes($this->participacao) . "'";
            $q = "
            UPDATE participacao 
            SET id = $this->new_id, participacao = $participacao WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$participacao = ($this->participacao === NULL) ? "NULL" : "'" . addslashes($this->participacao) . "'";        
                    
                    $q = "
INSERT INTO participacao (id, participacao) VALUES ($id, $participacao);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM participacao 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__participacao extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM participacao";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByParticipacao($participacao) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($participacao !== NULL) {
            $valor = "'$participacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("participacao = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Participacao($participacao) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($participacao !== NULL) {
            $valor = "'$participacao'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("participacao LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__participacao
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__participacao();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_participacao::getByPk($v);
                $collection->addParticipacao($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__participacao {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_participacao participacao 
     */
    public function addParticipacao($participacao) {
        array_push($this->collection, $participacao);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_participacao 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        



class ENTITY_tipo extends pk_table_entity {
        
        public static $table = 'tipo';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_tipo = 'tipo';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_tipo = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $tipo = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($tipo = NULL) {

$this->setTipo($tipo);

}



    /**
     *
     * @return ENTITY_tipo
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_tipo 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_tipo();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM tipo WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getTipo() {
        if (!$this->alimentou_tipo) {
            $r = $this->con()->qcv("
                        SELECT tipo 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "tipo");
            $this->tipo = $r[0];
            $this->alimentou_tipo = true;
        }
        return $this->tipo;
    }
                        

public function feedFromDB() {$this->getTipo();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM tipo WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $tipo = ($this->tipo === NULL) ? "NULL" : "'" . addslashes($this->tipo) . "'";
            $q = "
            UPDATE tipo 
            SET id = $this->new_id, tipo = $tipo WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$tipo = ($this->tipo === NULL) ? "NULL" : "'" . addslashes($this->tipo) . "'";        
                    
                    $q = "
INSERT INTO tipo (id, tipo) VALUES ($id, $tipo);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM tipo 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__tipo extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM tipo";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByTipo($tipo) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($tipo !== NULL) {
            $valor = "'$tipo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("tipo = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Tipo($tipo) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($tipo !== NULL) {
            $valor = "'$tipo'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("tipo LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__tipo
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__tipo();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_tipo::getByPk($v);
                $collection->addTipo($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__tipo {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_tipo tipo 
     */
    public function addTipo($tipo) {
        array_push($this->collection, $tipo);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_tipo 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        



class ENTITY_usuario extends pk_table_entity {
        
        public static $table = 'usuario';
        
        // NOME DAS COLUNAS DISPONÍVEIS:
        public static $COLUMN_id = 'id';
                    public static $COLUMN_usuario = 'usuario';
                    public static $COLUMN_senha = 'senha';
                    
        // COLUNAS ALIMENTADAS DO BANCO?
                
                protected $alimentou_usuario = false;
                    protected $alimentou_senha = false;
                    
        // CAMPOS:
                
                protected $id = NULL;
                    protected $usuario = NULL;
                    protected $senha = NULL;
                    
        // CHAVES primárias com novos valores:
                
                protected $new_id = NULL;
                    
            
public function __construct($usuario = NULL, $senha = NULL) {

$this->setUsuario($usuario);
$this->setSenha($senha);

}



    /**
     *
     * @return ENTITY_usuario
     */
    public static function getObject($object) {
        return $object;
    }
    


            /**
             * 
             * @return ENTITY_usuario 
             * @throws MARCEL_ORM_ObjectNotFoundException
             */
        public static function getByPK($id) {
$table = new ENTITY_usuario();$table->setId($id);
                        
        // verificando se a chave primária existe:
        modelo_conn::get_conn()->q("SELECT COUNT(*) AS total FROM usuario WHERE id = '$id'", "total");
            if(modelo_conn::get_conn()->getQueryRows() == 0) {
                // não existe.
                throw new MARCEL_ORM_ObjectNotFoundException();
            }$table->feedFromDB();
            
return $table; }
                        
    public function setId($id) {
        $this->id = $id;
        if ($this->new_id === NULL) {
            $this->new_id = $id;
        }
    }
                        
                        
                        
    public function set_NEW_Id($new_id) {
        $this->new_id = $new_id;
    }
                        
                    
                        
    public function setUsuario($usuario) {
        $this->usuario = $usuario;
    }
                        
    public function setSenha($senha) {
        $this->senha = $senha;
    }
public function getId() {
        return $this->id;
    }                    


                    

public function getUsuario() {
        if (!$this->alimentou_usuario) {
            $r = $this->con()->qcv("
                        SELECT usuario 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "usuario");
            $this->usuario = $r[0];
            $this->alimentou_usuario = true;
        }
        return $this->usuario;
    }
                        


                    

public function getSenha() {
        if (!$this->alimentou_senha) {
            $r = $this->con()->qcv("
                        SELECT senha 
                        FROM " . self::$table . " 
                        WHERE id = '" . $this->id . "'
                            ", "senha");
            $this->senha = $r[0];
            $this->alimentou_senha = true;
        }
        return $this->senha;
    }
                        

public function feedFromDB() {$this->getUsuario();
$this->getSenha();
}
public function save() {


if(
        $this->id === NULL
                
) {
            $this->save_insert();
        }else{
            // verificando se a chave primária existe:
            $r = $this->con()->qcv("SELECT COUNT(*) AS total FROM usuario WHERE id = '$this->id'", "total");
            if($this->con()->getQueryRows() == 0) {
                // não existe.
                $this->save_insert();
            }else{
                // registro já existe.
                $this->save_update();
            }
            $this->save_update();
        }
    }            

    /**
     * @throws DBException
     */
    protected function save_update() {

                $usuario = ($this->usuario === NULL) ? "NULL" : "'" . addslashes($this->usuario) . "'";$senha = ($this->senha === NULL) ? "NULL" : "'" . addslashes($this->senha) . "'";
            $q = "
            UPDATE usuario 
            SET id = $this->new_id, usuario = $usuario, senha = $senha WHERE id = '$this->id'";
            $this->con()->q($q);
} // CLOSE save_update()

                    
protected function save_insert() {$id = ($this->id === NULL) ? "NULL" : "'" . addslashes($this->id) . "'";$usuario = ($this->usuario === NULL) ? "NULL" : "'" . addslashes($this->usuario) . "'";$senha = ($this->senha === NULL) ? "NULL" : "'" . addslashes($this->senha) . "'";        
                    
                    $q = "
INSERT INTO usuario (id, usuario, senha) VALUES ($id, $usuario, $senha);";            

$this->con()->q($q);

} // CLOSE SAVE_INSERT
                
  public function remove() {
        
        $q = "
            DELETE FROM usuario 
            WHERE id = '$this->id'";
        
        $this->con()->q($q);
        
    } // close remover()
    


} // close classe;


            
class ENTITY__FIND__usuario extends ENTITY__FIND__GENERIC {

    public function selectAll() {
                if(!$this->select_all_called) {
        $this->query = "SELECT id
        FROM usuario";
                $this->select_all_called = true;
                }
    } // close selectAll();

                
                        
public function filterById($id) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($id !== NULL) {
            $valor = "'$id'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("id = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterByUsuario($usuario) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($usuario !== NULL) {
            $valor = "'$usuario'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("usuario = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBySenha($senha) {
                    
                        $this->selectAll();
                        
                        
                        $valor = "NULL";
        if ($senha !== NULL) {
            $valor = "'$senha'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("senha = $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Usuario($usuario) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($usuario !== NULL) {
            $valor = "'$usuario'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("usuario LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 
                        
public function filterBy_LIKE_Senha($senha) {
                        
                        $this->selectAll();
                        
                        $valor = "NULL";
        if ($senha !== NULL) {
            $valor = "'$senha'";
        }

        $this->addWhereOrAnd();
        $this->addQuery("senha LIKE $valor");
                        
                        
                        
                        
                       } // close filterBy 


    /**
     *
     * @return ENTITY__COLLECTION__usuario
     * @throws MARCEL_ORM_ObjectNotFoundException caso não encontre nenhum resultado.
     */
    public function get() {
        
                $this->selectAll();
                
        $this->con = modelo_conn::get_conn();
        $this->addQuery(";");
        $collection = new ENTITY__COLLECTION__usuario();
        
        $r = $this->con->qcv($this->query, "id");
        
        if($this->con->getQueryRows() != 0) {
            
        

            foreach ($r as $v) {
                $object = ENTITY_usuario::getByPk($v);
                $collection->addUsuario($object);
                $this->amount_found++;
                
            } // fim foreach
        
        } // fim if
    
        return $collection;
    } // end get()
    
} // end class










                
                
                
                class ENTITY__COLLECTION__usuario {
        
                
                
                protected $collection = array();
    
    /**
     *
     * @param ENTITY_usuario usuario 
     */
    public function addUsuario($usuario) {
        array_push($this->collection, $usuario);
    }
    
    public function getAmount() {
        return sizeof($this->collection);
    }
    
    
    /**
     *
     * @param int $index
     * @return ENTITY_usuario 
     */
    public function getByIndex($index) {
        return $this->collection[$index];
    }
                
                
                public function getCollectionAsArray() {
        return $this->collection;
    }
                
                
        }
        
        
        




?>